home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
UTILITIE
/
CPU_MEMO
/
1648.ZIP
/
TESS-C.ARC
/
TESS.H
next >
Wrap
C/C++ Source or Header
|
1988-10-02
|
20KB
|
493 lines
/*
* TESS.H -- 'C' INCLUDE file for TesSeRact
*/
/********************************< TESS.H >**********************************
* *
* C Include File for TesSeRact *
* ---------------------------- *
* *
* TesSeRact(TM) -- A Library of Routines for Creating Ram-Resident (TSR) *
* programs for the IBM PC and compatible Personal *
* Computers. *
* *
* The software, documentation and source code are: *
* *
* Copyright (C) 1986, 1987, 1988 Tesseract Development Team *
* All Rights Reserved *
* *
*************************************************************************CR*/
/**
This product supports the TesSeRact(TM) Standard for Ram-Resident
Program Communication. For information about TesSeRact, contact the
TesSeRact Development Team at:
TesSeRact Development Team
c/o Chip Rabinowitz
2084 Woodlawn Avenue
Glenside, PA 19038
1-215-884-3373
Compuserve: 70731,20
MCIMAIL: 315-5415
This MCIMAIL Account has been provided to the TesSeRact Development
Team by Borland International, Inc. The TesSeRact Development Team is
in no way associated with Borland International, Inc. TesSeRact is a
trademark of the TesSeRact Development Team.
**/
/**
***************************************************************************
Copyright Notice
***************************************************************************
This document, other accompanying written and disk-based notes and
specifications, and all referenced and related program files, demonstration
code and object modules accompanying this document are copyrighted by the
TesSeRact Development Team. The copyright owner hereby licenses you to:
use the software; make as many copies of the software and documentation as
you wish; give exact copies of the original to anyone; and distribute the
software and documentation in its unmodified form via electronic means.
There is no charge for any of the above.
You are specifically prohibited from charging, or requesting donations, for
any such copies, however made. Exceptions may be granted to organizations
which charge a small fee for materials, handling, postage and general
overhead. NO ORGANIZATION IS AUTHORIZED TO CHARGE ANY AMOUNT FOR
DISTRIBUTION OF THE SOFTWARE OR DOCUMENTATION UNDER ANY OTHER CONDITIONS.
Organizations which charge a fee for distribution of any and all TesSeRact
materials, except as noted above or with the express, written consent of
the TesSeRact Development Team, will be considered in violation of this
copyright, and will be prosecuted to the full extent of the law.
In addition, you are specifically prohibited from making any modifications
to the TesSeRact Library Routines and/or documentation, unless you have a
license for the use of the source code. Under no circumstances is the
copyright notice embedded in the TesSeRact code to be modified or removed.
This is not free software. This license allows you to use this software
without charge for a period of 30 days. In order to include this software
as part of any product, either commercial, shareware, freeware, or public
domain, registration is required. TesSeRact may not be included in any
product for any use without registration. Any such use of the TesSeRact
product are in violation of federal copyright laws, and will be prosecuted.
No copy of the software may be distributed or given away without this
accompanying documentation; this notice must not be removed.
***************************************************************************
Warranty
***************************************************************************
There is no warranty of any kind associated with this software, and the
copyright owner is not liable for damages of any kind. By using this
software, you agree to this. Every effort has been made by the TesSeRact
Development Team to make this product bug-free. However, the nature of
software development is that it is impossible to guarantee bug-free
software.
In the event a verifiable bug is found, the TesSeRact Development Team will
make every attempt to repair the bug as soon as possible.
***************************************************************************
Acknowledgements
***************************************************************************
Grateful appreciation is expressed to CompuServe Information Service, the
IBM Software Forums and their Sysops, and Computer Language Magazine, for
providing us with the means to accomplish the development of TesSeRact.
Without their gracious assistance, TesSeRact could never have come into
existence.
And let's not forget Anne Marie, who suffered through the long evenings and
nights spent getting this product ready.
***************************************************************************
The TesSeRact Development Team:
***************************************************************************
Team Leader: Chip Rabinowitz
Developers: Lane Ferris
Kim Kokkonen
Jim Kyle
Neil J. Rubenking
Barry Simon
Rick Wilson
Contributors: Thomas Brandenborg
Chris Dunford
John Friend
Mark Horvatich
John Hensley
Advisors: Robert Bierman
David Intersimone
Rick Kraus
David Moskowitz
Gary Saxer
***************************************************************************
**/
/*#define MSC5 */ /* If using Microsoft C 5.0 */
/*#define TC */ /* If using Turbo C 1.5 */
/*
* Stores interrupt vector information for TesSeRact use
*/
struct TsrIntTable {
void far * OldVector; /* Old Interrupt Vector */
unsigned char IntNumber; /* Interrupt Number */
void near * NewVector; /* offset of new vector */
};
/*
* User structure for defining additional hotkeys
*/
struct ExtraHot {
unsigned char Hotkey; /* hotkey to check for */
unsigned char ShiftState; /* shift state for this hot key */
unsigned char FlagByte; /* flag value to use */
/* MAY NOT BE ZERO!!! */
};
/*
* TesSeRact internal data
*/
struct TsrData {
unsigned char RevLvl; /* Revision Level of TESS Lib */
unsigned char PopupType; /* Type of popup in effect */
unsigned char WasInt8; /* An Interrupt 08h occurred */
unsigned char WasInt13; /* An Interrupt 13h occurred */
unsigned char IntFlags; /* Which interrupts are active */
unsigned char SoftFlags; /* Which soft ints are active */
unsigned char DosVersion; /* current major revision of DOS */
unsigned char waitcount; /* Count to wait before popping up */
void far * InDosFlag; /* Pointer to DOS INDOS flag */
void far * DosCritErr; /* Pointer to DOS Critical Error */
unsigned short UserPSP; /* PSP segment of user program */
unsigned short User28PSP; /* PSP segment of user program */
void far * UserDTA; /* DTA of interrupted program */
void far * User28DTA; /* DTA of interrupted program */
unsigned short UserSS; /* Stack segment of user program */
unsigned short UserSP; /* Stack pointer of user program */
unsigned short User28SS; /* Stack segment of user program */
unsigned short User28SP; /* Stack pointer of user program */
void far * UserInt24; /* pointer to use INT 24 handler */
unsigned short OldExtErr[3]; /* storage for old DOS 3 extended */
/* error information */
unsigned char OldBreak; /* Old Break Setting */
unsigned char OldVerify; /* Old Verify Setting */
unsigned char InWord4; /* flag to indicate in WORD 4.0 */
unsigned char WasWord4; /* word 4 special popup flag */
unsigned char NewKbdFlag; /* Enhanced Keyboard Call in use */
unsigned char Word4Delay; /* Delay for Word 4 */
struct TsrIntTable Int8; /* Interrupt vector tables */
struct TsrIntTable Int9;
struct TsrIntTable Int13;
struct TsrIntTable Int16;
struct TsrIntTable Int1C;
struct TsrIntTable Int21;
struct TsrIntTable Int28;
struct TsrIntTable Int2F;
struct TsrIntTable Int1B;
struct TsrIntTable Int23;
struct TsrIntTable Int24;
};
/*
* TesSeRact data for individual TSR
*/
struct TsrParms {
char IdCode[8]; /* Unique TSR Identification String*/
/* NOTE -- NOT NULL-TERMINATED */
unsigned short IdNum; /* Unique TSR Identification Number*/
unsigned long FuncFlags; /* Bit map of supported functions */
unsigned char HotKey; /* Hotkey used by TSR for popup */
unsigned char ShiftState; /* ShiftState used by this TSR pop */
unsigned char HotKeyFlag; /* which hotkey is in use */
unsigned char ExtraHotCount; /* Number of Extra Hotkeys to use */
void far * ExtraHotKeys; /* Pointer to extra hotkeys */
unsigned short TsrStatus; /* Current TSR Status Flags */
unsigned short TsrPSP; /* TSR's PSP Segment */
void far * TsrDTA; /* Pointer to TSR's DTA region */
unsigned short TsrDSeg; /* TSR's Default Data Segment */
void far * PopupStack; /* Pointer to Popup Stack Area */
void far * BackStack; /* Pointer to Background Stack */
};
/*-------------------------------------------------------------------------*/
/************************************************************
* Other EQUates *
*********************************************************CR*/
/*
* #defines for HotKey
*/
#define TSRHOT_A 0x1e
#define TSRHOT_B 0x30
#define TSRHOT_C 0x2e
#define TSRHOT_D 0x20
#define TSRHOT_E 0x12
#define TSRHOT_F 0x21
#define TSRHOT_G 0x22
#define TSRHOT_H 0x23
#define TSRHOT_I 0x17
#define TSRHOT_J 0x24
#define TSRHOT_K 0x25
#define TSRHOT_L 0x26
#define TSRHOT_M 0x32
#define TSRHOT_N 0x31
#define TSRHOT_O 0x18
#define TSRHOT_P 0x19
#define TSRHOT_Q 0x10
#define TSRHOT_R 0x13
#define TSRHOT_S 0x1f
#define TSRHOT_T 0x14
#define TSRHOT_U 0x16
#define TSRHOT_V 0x2f
#define TSRHOT_W 0x11
#define TSRHOT_X 0x2d
#define TSRHOT_Y 0x15
#define TSRHOT_Z 0x2c
#define TSRHOT_0 0x0b
#define TSRHOT_1 0x02
#define TSRHOT_2 0x03
#define TSRHOT_3 0x04
#define TSRHOT_4 0x05
#define TSRHOT_5 0x06
#define TSRHOT_6 0x07
#define TSRHOT_7 0x08
#define TSRHOT_8 0x09
#define TSRHOT_9 0x0a
#define TSRHOT_F1 0x3b
#define TSRHOT_F2 0x3c
#define TSRHOT_F3 0x3d
#define TSRHOT_F4 0x3e
#define TSRHOT_F5 0x3f
#define TSRHOT_F6 0x40
#define TSRHOT_F7 0x41
#define TSRHOT_F8 0x42
#define TSRHOT_F9 0x43
#define TSRHOT_F10 0x44
/*
* Enhanced Keyboards only
*
* May not work with all computers, keyboards
*
*/
#define TSRHOT_F11 0x57
#define TSRHOT_F12 0x58
/*
* #defines for ShiftState
*/
#define TSRPOPRSHIFT 0x01
#define TSRPOPLSHIFT 0x02
#define TSRPOPCTRL 0x04
#define TSRPOPALT 0x08
/*
* #defines for TSRFLAGS
*/
#define TSRUSEPOPUP 0x0010 /* Use TsrMain() */
#define TSRUSEBACK 0x0020 /* Use TsrBackProc() */
#define TSRUSETIMER 0x0040 /* Use TsrTimer() */
#define TSRUSEUSER 0x0100 /* Use TsrUserProc() */
#define NOPOPGRAPH 0x1000 /* Don't pop over graphics */
#define NOPOPCOMMAND 0x2000 /* Don't pop over command-line */
/*
* #defines for TsrStatus flags
*/
#define HOTKEYON 0x0001 /* hot key pressed */
#define SHIFTSON 0x0002 /* shift states match */
#define TSRACTIVE 0x0004 /* tsr is running in foreground */
#define INT28ACTIVE 0x0008 /* INT28 routine is running */
#define POPUPSET 0x0010 /* popup resident routine installed*/
#define BACKSET 0x0020 /* background routine installed */
#define TIMERSET 0x0040 /* timer procedure installed */
#define EXTRAHOTSET 0x0080 /* extra hot keys installed */
#define USERPROCON 0x0100 /* User-defined procedure installed*/
#define TSRENABLED 0x0200 /* TSR currently enabled */
#define TSRRELEASED 0x0400 /* TSR has been released */
#define EXTRAINT24 0x0800 /* User installed replacement INT24*/
/*
* EQUates for IntFlags and SoftFlags
*/
#define ININT13 0x04 /* Interrupt 13 is currently active*/
#define ININT21 0x08 /* Interrupt 21 is currently active*/
#define ININT16 0x10 /* Interrupt 16 is currently active*/
#define ININT28 0x20 /* Interrupt 28 is currently active*/
#define ININT08 0x40 /* Interrupt 08 is currently active*/
#define ININT1C 0x80 /* Interrupt 1C is currently active*/
/*
* Keyboard Stuffing speeds
*/
#define STUFF_SLOW 0 /* Stuff key when buffer is empty */
#define STUFF_MED 1 /* Stuff up to four keys per tick */
#define STUFF_FAST 2 /* Full buffer on every tick */
/*-------------------------------------------------------------------------*/
/************************************************************
* Prototypes for routines in TESS.LIB *
*********************************************************CR*/
extern unsigned far pascal TsDoInit(
unsigned char HotKey,
unsigned char ShiftState,
unsigned short TSRFlags,
unsigned short MemoryTop
);
extern void far pascal TsSetStack(
void far *PopUpStack,
void far *BackGroundStack
);
extern void far pascal TessBeep(
void
);
/*-------------------------------------------------------------------------*/
/************************************************************
* TesSeRact Multiplex Interrupt (2Fh) functions *
* These functions are provided for your convenience in *
* TESS.LIB *
*********************************************************CR*/
extern unsigned far pascal TsCheckResident(
char far *IDStr,
unsigned far *IDNum
);
extern struct TsrParms far * far pascal TsGetParms(
unsigned short TsrIdNum
);
extern unsigned far pascal TsCheckHotkey(
unsigned char HotKey
);
extern unsigned far pascal TsSetUser24(
unsigned short TsrIdNum,
void (far *UserCritErrProc) (void)
);
extern struct TsrData far * far pascal TsGetData(
unsigned short TsrIdNum
);
extern unsigned far pascal TsSetExtraHot(
unsigned short TsrIdNum,
unsigned char count,
struct ExtraHot far *ExtraHotKeys
);
extern unsigned far pascal TsEnable(
unsigned short TsrIdNum
);
extern unsigned far pascal TsDisable(
unsigned short TsrIdNum
);
extern unsigned far pascal TsRelease(
unsigned short TsrIdNum
);
extern unsigned far pascal TsRestart(
unsigned short TsrIdNum
);
extern unsigned far pascal TsGetStat(
unsigned short TsrIdNum
);
extern unsigned far pascal TsSetStat(
unsigned short TsrIdNum,
unsigned short NewStatus
);
extern unsigned far pascal TsGetPopType(
unsigned short TsrIdNum
);
extern unsigned far pascal TsCallUserProc(
unsigned short TsrIdNum,
void far *UserPtr
);
extern unsigned far pascal TsStuffKeyboard(
unsigned short TsrIdNum,
void far *KbdChars,
unsigned short CharCount,
unsigned short Speed
);
extern unsigned far pascal TsTriggerPop(
unsigned short TsrIdNum
);
extern unsigned far pascal TsTriggerBack(
unsigned short TsrIdNum
);
void far pascal TsVerify2f(void);
void far pascal TsRestore2f(void);
/*-------------------------------------------------------------------------*/
/************************************************************
* USER-DEFINED routines *
* If no entry point for these routines is defined in *
* your code, a dummy procedure from TESS.LIB will be *
* used to satisfy the external references. *
* These are the prototypes for the functions. *
* Note that beginning with Version 0.74, it is no *
* longer necessary for all these procedures to be *
* defined -- TESS.LIB has dummy procedures to resolve *
* the external references. *
*********************************************************CR*/
void far pascal TsrMain(
void
);
unsigned far pascal TsrBackCheck(
void
);
void far pascal TsrBackProc(
void
);
void far pascal TsrTimerProc(
void
);
void far pascal TsrUserProc(
void far *UserPtr
);
void far pascal TsrCleanUp(
unsigned InitOrShutdown
);